$(function() {
  'use strict';

  window.Input = function(selector) {
    var $ele, $error_ele, me = this, rule = {required: true};

    init();
    function init() {
      find_ele();
      find_error();
      parse_rule();
      load_validator();
      listen();
    }

    function find_ele() {
      if (selector instanceof jQuery)
        $ele = selector;
      else
        $ele = $(selector);
    };
    function find_error() {
      $error_ele = $('#' + $ele.attr('name') + '-error');
    };
    function parse_rule() {
      //[maxlength, 16]..
      var rule_str = $ele.data('rule');
      if (!rule_str)
        return;
      var rule_arr = rule_str.split('|');
      for (var i=0;i<rule_arr.length;i++) {
        var item_arr = rule_arr[i].split(':');
        rule[item_arr[0]] = JSON.parse(item_arr[1]);
      }
    };
    function get_val() {
      return $ele.val();
    }
    function load_validator() {
      var val = get_val();
      me.validator = new Validator(val, rule);
    };
    function listen() {
      $ele.on('blur', function() {
        var result = me.validator.is_valid(get_val());
        if (!result) {
          $error_ele.show();
          if ($ele.attr('name') == 'phone') {
            $ele.attr('title','手机号长度为11位') ;
          }
          else if($ele.attr('name') == 'password') {
            $ele.attr('title', '密码长度大于8位 不超过20位 不能含有特殊字符');
          }
          else if($ele.attr('name') == 'name') {
            $ele.attr('title', '用户名不能含有特殊字符');
          }
          else if($ele.attr('name') == 'number') {
            $ele.attr('title', '验证码错误');
          }
        }
        else {
          $error_ele.hide();
          $ele.attr('title', '');
        }
      })
    }
  }
});
